import type { PageParam, PageResult } from '@vben/request';
import type { Dayjs } from 'dayjs';

import { requestClient } from '#/api/request';

export namespace BxcCameraInfoApi {
  /** 摄像头信息信息 */
  export interface BxcCameraInfo {
    id: number; // id
    code?: string; // 摄像头编号
    name?: string; // 转发流名称
    app: string; // 转发流应用
    ip: string; // 摄像头IP
    subsidiary?: string; // 分公司
    installationLocation: string; // 安装地点
    installationTime: string | Dayjs; // 安装时间
    groupId?: number; // 分组Id
    pullStreamUrl: string; // 拉流地址
    pullStreamType: number; // 拉流类型 0:未知类型,1:RTSP,2:RTMP,3:FVL,4:HLS,21:GB28181
    nickname: string; // 摄像头昵称
    remark: string; // 摄像头备注
    forwardState?: number; // 转发状态 0:未转发 1:转发中
    addType: number; // 添加类型 0:后台管理表单添加 1:后台管理批量导入 10:接口添加
    syncTime: string | Dayjs; // 同步时间
    state: number; // 摄像头状态（暂未使用）
  }
}

/** 查询摄像头信息分页 */
export function getBxcCameraInfoPage(params: PageParam) {
  return requestClient.get<PageResult<BxcCameraInfoApi.BxcCameraInfo>>('/moxi/bxc-camera-info/page', { params });
}

/** 查询摄像头信息详情 */
export function getBxcCameraInfo(id: number) {
  return requestClient.get<BxcCameraInfoApi.BxcCameraInfo>(`/moxi/bxc-camera-info/get?id=${id}`);
}

/** 新增摄像头信息 */
export function createBxcCameraInfo(data: BxcCameraInfoApi.BxcCameraInfo) {
  return requestClient.post('/moxi/bxc-camera-info/create', data);
}

/** 修改摄像头信息 */
export function updateBxcCameraInfo(data: BxcCameraInfoApi.BxcCameraInfo) {
  return requestClient.put('/moxi/bxc-camera-info/update', data);
}

/** 删除摄像头信息 */
export function deleteBxcCameraInfo(id: number) {
  return requestClient.delete(`/moxi/bxc-camera-info/delete?id=${id}`);
}

/** 批量删除摄像头信息 */
export function deleteBxcCameraInfoList(ids: number[]) {
  return requestClient.delete(`/moxi/bxc-camera-info/delete-list?ids=${ids.join(',')}`)
}

/** 导出摄像头信息 */
export function exportBxcCameraInfo(params: any) {
  return requestClient.download('/moxi/bxc-camera-info/export-excel', params);
}

